package com.biz.primus.model.promotion.vo;

import com.biz.primus.base.enums.CommonStatus;
import com.biz.primus.model.promotion.enums.PromotionProductLimitTypeEnum;
import com.biz.primus.model.promotion.enums.PromotionScopeEnum;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.List;
import lombok.Getter;
import lombok.Setter;

/**
 * 营销活动基本信息Vo
 *
 * @author david-liu
 */
@Getter
@Setter
public class BasePromotionVo implements Serializable {
    private static final long serialVersionUID = -3854840004048369519L;

    /**
     * 活动ID
     */
    private Long id;

    /**
     * 促销名
     */
    private String name;

    /**
     * 介绍
     */
    private String description;

    /**
     * 活动生效的渠道(APP/微商城), 多个渠道使用逗号隔开
     */
    private List<String> channels;

    /**
     * 活动开始时间
     */
    private String startTime;

    /**
     * 活动结束时间
     */
    private String endTime;

    /**
     * 享受活动的会员等级集合
     */
    private List<String> effectMemberLevels;

    /**
     * 享受活动的会员标签
     */
    private List<Long> effectMemberTags;

    /**
     * 活动范围
     */
    private PromotionScopeEnum scope;

    /**
     * 活动生效的范围ID集合(活动范围为: 城市 -> 城市ID集合, 店铺 -> 店铺ID集合), 多个范围使用逗号分隔
     */
    private String scopeIds;

    /**
     * 可叠加使用的促销的ID, 多个值使用逗号隔开
     */
    private String overlayPromotionIds;

    /**
     * 促销限制商品限制类型(可选: 按分类, 按品牌, 按商品)
     */
    private PromotionProductLimitTypeEnum productLimitType;

    /**
     * 促销限制的商品分类ID, 多个值使用逗号隔开
     */
    private String limitCategoryIds;

    /**
     * 促销限制的商品品牌ID, 多个值使用逗号隔开
     */
    private String limitBrandIds;

    /**
     * 限制的商品ID, 将所有的商品限定条件都要转换成限制商品ID, 多个值使用逗号隔开
     */
    private String limitProductIds;

    /**
     * 是否可以享受折上折(同时使用优惠券和促销)
     */
    private Boolean allowCoupon = false;

    /**
     * 启用状态
     */
    private CommonStatus commonStatus = CommonStatus.ENABLE;

    /**
     * 用户是否只能参加一次
     */
    private Boolean userOnceGainLimit = false;

    /**
     * 创建时间戳
     */
    private Timestamp createTimestamp;
}
